package 代码记录.Bit48天集训;

import java.util.*;

/**1.数组中出现次数超过一半的数字
 * 2.简单错误记录
 * @author zx
 * @create 2022-07-06 19:55
 */
public class day_46 {
    /**
     * @return 摩尔投票法
     */
    public int MoreThanHalfNum_Solution(int [] array) {
        int count = 0;
        int candidate = 0;
        for(int i = 0;i < array.length;i++){
            if(count == 0){//挑擂成功
                candidate = array[i];
            }
            if(array[i] == candidate){
                count++;
            }else{
                count--;
            }
        }
        return candidate;
    }

    /**
     纯粹的考代码实现能力
     记录个数,故使用Map,不需要排序故使用HashMap,根据题意是要循环输出,而且提交一次会有测试用例提示,需要按照输入顺序输出
     故使用LinkedHashMap.在输出的时候,题目的意思是循环八个,但问题是必须记录全部错误个数,否则刚记录完后弹出了
     错误数就对不上了,跟操作系统里的缺页有那么点相似.
     */
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        Map<String, Integer> map = new LinkedHashMap<String, Integer>();
        while (sc.hasNext()) {
            String str = sc.next();
            int num = sc.nextInt();
            String[] arr = str.split("\\\\");  //根据\切割
            String s = arr[arr.length - 1];
            if (s.length() > 16)  //截取
                s = s.substring(s.length() - 16,s.length());
            String key = s + " " + num;
            if (map.containsKey(key)){
                map.put(key, map.get(key) + 1);
            } else {
                map.put(key, 1);
            }
        }
        int count = 0,size = map.keySet().size();
        for (String string : map.keySet()) {
            count++;
            if (count > (size - 8)) {//输出最后八个记录
                System.out.println(string + " " + map.get(string));
            }
        }
    }
}
